package com.wc.blue_bridge_history.Java15B.E_最优分组;

import java.util.Scanner;

/**
 * @Author congge
 * @Date 2024/4/13 13:39
 * @description
 */
public class Main {
    static double p;
    static int n;

    /**
     * 思路：每一个宠物的感染率是p
     *      那么一组的感染率
     *      也就就   (1 - p) ^ k
     *      一组的被感染的概率就是 1 - (1 - p) ^ k
     *      然后如果这组被感染了，那就还需要 k 个试剂, 那一共有n / k 组
     *      那期望被感染的组就是 n / k * ( 1 - (1 - p) ^ k)
     *      那么就还多需要期望被感染的组 * k
     *      也就是  n / k * ( 1 - (1 - p) ^ k) * k
     *      也就是n * (1 - (1 - p) ^ k)
     *      再加上最开始需要混测的n / k 个
     *      总体期望就是 n / k + n * (1 - (1 - p) ^ k)个
     *      一个10 ^ 6次方的数，也就几个约数， 一个约数算就好了
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        p = sc.nextDouble();
        double minV = Double.MAX_VALUE;
        int res = 0;
        for (int i = 1; i <= n; i++) {
            if (n % i == 0) {
                if (minV > work(i)){
                    res = i;
                    minV = work(i);
                }
            }
        }
        System.out.println(res);
    }

    static double work(int k) {
        if (k == 1) return 1.0 * n / k;
        return 1.0 * n / k + n * (1 - qkm(1 - p, k));
    }

    static double qkm(double a, int b) {
        double res = 1;
        while (b > 0) {
            if ((b & 1) == 1) res *= a;
            a *= a;
            b >>= 1;
        }
        return res;
    }
}
